# -*- coding:utf-8 -*-
"""
@Time:  2024/6/21 21:31
@Auth:  Mrs.Gou 
@Function:  继承
"""
import json

from class07.demo03 import Human
from class07.demo04 import HuMan


# alt+enter可以直接导入  WoMen直接继承了HuMan，还可以多继承WoMen(HuMan,xxx,xxx)
class WoMen(HuMan, Human):
    """
    多继承
    """
    # 整个类的人都是女人,相当于对继承的类进行了拓展
    sex = '女'

    def __init__(self, name, a):
        """
        如果子类没有写构造函数，默认使用父类的构造函数
        如果写了构造函数，就必须在构造函数调父类的构造函数
        """
        # 两种写法：推荐HuMan那种，如果是多继承，就是xxx.__init__()
        # super().__init__(name)
        HuMan.__init__(self, name)
        Human.__init__(self, name, a, WoMen.sex)
        # 拓展
        self.height = 50
        # 重写
        self.age = a

    def make_up(self):
        """化妆"""
        print('女生化妆就年轻了')
        self.age -= 10

    def say(self, n):
        """搭讪"""
        print(f'{n.name}, 你好')

    def love(self, n, height):
        """
        重写love方法
        什么时候重写？当你发现父类的方法不能满足你的需求的时候，可以重写
        重写，只要名字一样就可以了
        """
        self.height = height
        if not (18 <= n.age < 28):
            print('年龄不合适拒绝')
            return False
        print('这个还可以')
        return True

    # 重构
    def __str__(self):
        return json.dumps({'age': self.age, 'name': self.name})


if __name__ == '__main__':
    girl = WoMen('lili', 29)
    print(girl.name)
    print(WoMen.type)
    print(WoMen.sex)

    girl1 = WoMen('lilian', 29)
    girl1.say(girl1)
    girl1.love(girl1, 166)

    # 拓展
    girl1.make_up()
    print(girl1.age)
    girl1.love(girl1, 166)

    # 私有变量的使用
    girl.get_spouse()

    # 基础函数-重载
    print(girl.__str__())
    print(girl.__doc__)
